Screen Open 0,320,145,16,Lowres : Screen Display 0,112,311,,
Double Buffer : Autoback 1 : Curs Off : Hide On : Cls 0
Bob Update Off : Unpack 6 : Erase 6
Load "Screens/Info.abk",6
Screen Open 1,320,80,16,Lowres : Screen Display 1,112,311,,
Curs Off : Unpack 6 : Erase 6
Load "Screens/Title.abk",6
Screen Open 3,144,944,16,Lowres : Screen Hide
Curs Off : Unpack 6 : Erase 6
Load "Screens/HiScore.abk",6
Screen Open 4,640,221,16,Hires : Screen Display 4,122,311,,
Curs Off : Unpack 6 : Screen To Back : Erase 6
Load "Screens/Bobs.abk"
Load "screens/Samples.abk",5
End Proc
Procedure _SHOW_SCREENS
'---- Move Screens into view ----
For L=0 To 135
Add SC0Y,-2 : Add SC1Y,-2 : Add SC4Y,-2
Screen Display 0,SCX,SC0Y,,
Screen Display 1,SCX,SC1Y,,
Screen Display 4,SCX,SC4Y,,
Wait Vbl
Next L
End Proc
Procedure _HIDE_SCREENS
For L=0 To 135
Add SC0Y,2 : Add SC1Y,2 : Add SC4Y,2
Screen Display 0,SCX,SC0Y,,
Screen Display 1,SCX,SC1Y,,
Screen Display 4,SCX,SC4Y,,
Wait Vbl
Next L
End Proc
Procedure TITLES
'----------- Move title screen to the main screen ------------
For I=142 To 0 Step -1
Screen Copy 3,3,1,131,133-I To 0,106,6+I
Screen Swap 0 : Wait Vbl
Next I
Proc INFO_DATA[2,1]
Screen Copy 3,3,1,131,133 To 0,106,6
'--------------- Scroll titles -----------------
S=0 : E=0 : D=0 : P=0
Repeat
If S=0 : For L=0 To 100 : Wait 1
If Fire(1) and E<>1 : Proc INFO_DATA[3,0] : E=1 : End If
Next L
End If
Inc S
Screen Copy 3,3,26+S,131,135+S To 0,106,29
Screen Swap 0 : Wait Vbl
If Inkey$=" " Then Proc INFO_DATA[10,1] : Wait Key : Proc INFO_DATA[2,1]
If Fire(1) and QUIT=0 Then QUIT=1 : Proc INFO_DATA[3,0]
If E=1 Then Exit
If S>663 Then S=0
Until S=0 and QUIT=1
P=663
For S=0 To 145
If S>111 and D<20 Then Inc D
If D=0 Then Inc P
Screen Copy 3,3,27+P,131,136+P+D To 0,106,29-D
Screen Swap 0 : Wait Vbl
Next S
End Proc
Procedure INFO_DATA[MES,_MODE]
Screen 1 : Gr Writing 0
If _MODE=1 Then Ink 3 : Box 8,21 To 114,69
If _MODE=0 Then Ink 0 : Box 8,21 To 114,69
Cls 8,13,26 To 110,65
On MES Gosub M1,M2,M3,M4,M5,M6,M7,M8,M9,M10
Read LINES
For L=1 To LINES
Read FONT : Set Font FONT
Read _INK,PX,PY,A$
Ink 0
Text PX,PY,A$
If Left$(A$,6)="Player" and PN=1 Then _INK=4
Ink _INK
Text PX-1,PY-1,A$
Next L
Pop Proc
M1: Restore MES1 : Return
M2: Restore MES2 : Return
M3: Restore MES3 : Return
M4: Restore MES4 : Return
M5: Restore MES5 : Return
M6: Restore MES6 : Return
M7: Restore MES7 : Return
M8: Restore MES8 : Return
M9: Restore MES9 : Return
M10: Restore MES10 : Return
MES1:
Data 2
Data F4,5,28,40,"Please Wait"
Data F4,5,21,55,"Loading Titles"
MES2:
Data 2
Data F5,10,19,40,"Press Fire"
Data F5,10,18,59,"for Options"
MES3:
Data 3
Data F3,5,28,37,"Please Wait"
Data F4,5,25,49,"Loading"
Data F4,5,41,61,"Options"
MES4:
Data 3
Data F3,11,19,37,"Use Mouse or"
Data F4,11,22,49,"Joystick to"
Data F4,11,25,61,"Select Options"
MES5:
Data 2
Data F5,1,16,41,"Player"+Str$(PN)
Data F5,3,16,61,"Press Fire"
MES6:
Data 2
Data F5,11,19,43,"Please Wait"
Data F4,11,15,56,"Loading Maze"+Str$(MAZE(PN))
MES7:
Data 3
Data F4,4,24,37,"Bonus= X 1"
Data F3,11,24,48,"Next"
Data F4,11,19,60,"Cheese= 100"
MES8:
Data 2
Data F4,4,19,40,"Game Over"
Data F3,4,15,52,"Play Again(Y/N)"
MES9:
Data 2
Data F5,10,19,40,"Press Fire"
Data F5,10,17,59,"To Continue"
MES10:
Data 2
Data F4,4,15,40,"Press Any Key "
Data F5,4,16,59,"To Continue"
End Proc
Procedure OPTIONS
Screen Close 3
DUMMY=Free
QUIT=0 : Screen 0
Reserve Zone 17 : Restore _ZONES
For L=1 To 17
Read A,B,C,D
Set Zone L,A,B To C,D
Next L
X Mouse=250 : Y Mouse=145 : Show On
Repeat
Wait 2
Proc STATUS : Screen 0
Limit Mouse X Hard(202),Y Hard(22) To X Hard(230),Y Hard(137)
If Key State(95) Then Proc RESET
If Jup(1) Then Y=Y Mouse : Y Mouse=Y-2
If Jdown(1) Then Y=Y Mouse : Y Mouse=Y+2
If Jright(1) Then X=X Mouse : X Mouse=X+2
If Jleft(1) Then X=X Mouse : X Mouse=X-2
MZ=Mouse Zone
If Mouse Key or Fire(1) : Wait 10
On MZ Proc SCR_U_D,SCR_U_D,SCR_L_R,SCR_L_R,SCR_POS,SCR_POS,CON_SPEED,CON_SPEED,CON_CHEESE,CON_CHEESE,CON_DIF,CON_DIF,CON_MAZE,CON_MAZE,CON_PLAYERS,CON_PLAYERS,CON_START
End If
Until QUIT=1
_ZONES:
Data 202,22,213,26,202,28,213,33,218,22,223,33,224,22,230,33
Data 202,37,213,48,218,38,230,48,202,51,213,63,218,52,230,63
Data 202,67,213,78,218,67,230,78,202,82,213,93,218,82,230,93
Data 202,97,213,108,218,97,230,108,202,112,213,123,218,112,230,123
Data 202,127,230,137
End Proc
Procedure RESET
SCX=112 : SC0Y=40 : SC1Y=198 : SC4Y=238
Screen Display 0,SCX,SC0Y,,
Screen 0 : Limit Mouse X Hard(191),Y Hard(33) To X Hard(221),Y Hard(146)
Screen Display 1,SCX,SC1Y,,
Screen Display 4,SCX,SC4Y,,
End Proc
Procedure SCR_U_D
'---------- Move display up or down --------------
If MZ=2 Then Y Mouse=Y Mouse-1 : Inc SC0Y : Inc SC1Y : Inc SC4Y
If MZ=1 Then Y Mouse=Y Mouse+1 : Dec SC0Y : Dec SC1Y : Dec SC4Y
Screen Display 0,SCX,SC0Y,,
Screen Display 1,SCX,SC1Y,,
Screen Display 4,SCX,SC4Y,,
End Proc
Procedure SCR_L_R
MOVE=0 : Wait 10
If MZ=3 Then MOVE=MOVE-16 Else MOVE=MOVE+16
SCX=SCX+MOVE
X Mouse=X Mouse+MOVE
Screen Display 0,SCX,SC0Y,,
Screen Display 1,SCX,SC1Y,,
Screen Display 4,SCX,SC4Y,,
End Proc
Procedure SCR_POS
' ------- Move Info Screen -----------------
If MZ=6 or P=1 Then Goto JUMP
If SC1Y<SC0Y Then Pop Proc
For L=0 To 75
Inc SC0Y : If SC1Y>SC0Y-73 Then SC1Y=SC1Y-1.4
Screen Display 0,SCX,SC0Y,,
Screen Display 1,SCX,SC1Y,,
Wait Vbl : P=0
Y Mouse=Y Mouse+1
Next L
Screen Display 0,SCX,SC4Y-142,,
Screen Display 1,SCX,SC4Y-219,,
Screen Display 4,SCX,SC4Y,,
Pop Proc
JUMP:
If SC1Y>SC0Y Then Pop Proc
For L=0 To 75
Dec SC0Y : If SC1Y<SC0Y+140 Then SC1Y=SC1Y+2
Screen Display 0,SCX,SC0Y,,
Screen Display 1,SCX,SC1Y,,
Wait Vbl : P=1
Limit Mouse X Hard(191),Y Hard(33) To X Hard(221),Y Hard(146)
Y Mouse=Y Mouse-1
Next L
Screen Display 0,SCX,SC4Y-219,,
Screen Display 1,SCX,SC4Y-77,,
Screen Display 4,SCX,SC4Y,,
End Proc
Procedure CON_SPEED
'------------ Speed -------------
If MZ=8 and SPEED>2 Then Dec SPEED
If MZ=7 and SPEED<5 Then Inc SPEED
A$=Str$(SPEED-1)
Ink 8 : Bar 186,54 To 198,64
Gr Writing 0 : Ink 0 : Text 189,63,A$
Screen 0 : Ink 2 : Text 188,62,A$
Proc STATUS
End Proc
Procedure CON_CHEESE
CHEESE=CHEESE(PN)
If MZ=9 and CHEESE<10 Then Add CHEESE,2
If MZ=10 and CHEESE>4 Then Add CHEESE,-2
A$=Str$(CHEESE)
SI=Len(A$)
A$="00"+Right$(A$,SI-1)
Ink 8 : Bar 186,69 To 198,79
Gr Writing 0 : Ink 0 : Text 188,78,Right$(A$,2)
Screen 0 : Ink 11 : Text 187,77,Right$(A$,2)
CHEESE(1)=CHEESE
CHEESE(2)=CHEESE
Proc STATUS
End Proc
Procedure CON_DIF
DIF=DIF(PN)
If MZ=11 and DIF<7 Then Inc DIF
If MZ=12 and DIF>4 Then Dec DIF
A$=Str$(DIF-1)
Ink 8 : Bar 186,84 To 198,94
Gr Writing 0 : Ink 0 : Text 189,93,A$
Screen 0 : Ink 4,8 : Text 188,92,A$
DIF(1)=DIF
DIF(2)=DIF
Proc STATUS
End Proc
Procedure CON_MAZE
MAZE=MAZE(PN)
If MZ=13 and MAZE<4 Then Inc MAZE
If MZ=14 and MAZE>1 Then Dec MAZE
A$=Str$(MAZE)
Ink 8 : Bar 186,99 To 198,109
Gr Writing 0 : Ink 0 : Text 189,108,A$
Screen 0 : Ink 5 : Text 188,107,A$
MAZE(1)=MAZE
MAZE(2)=MAZE
Proc STATUS
End Proc
Procedure CON_PLAYERS
If MZ=15 Then PLY=2
If MZ=16 Then PLY=1
A$=Str$(PLY)
Ink 8 : Bar 186,114 To 198,124
Gr Writing 0 : Ink 0 : Text 188,123,A$
Screen 0 : Ink 13,8 : Text 187,122,A$
Proc STATUS
End Proc
Procedure CON_START
QUIT=1 : Hide
End Proc
Procedure STATUS
' ------------------------ Status Display ---------------------------
Screen 1 : Gr Writing 1 : Set Font F2
' -- Speed --
Ink 2,0
A$=Str$(SPEED-1)
Text 158,64,A$
'-- Number of Cheese to start / Remaining --
A$=Str$(CHEESE(PN)-EATEN(PN))
SI=Len(A$)
A$="00"+Right$(A$,SI-1)
Ink 11
Text 126,29,Right$(A$,2)
' -- Number of Rats --
Ink 4
A$=Str$(DIF(PN)-1)
Text 190,29,A$
' -- Maze Number --
Ink 5
A$=Str$(MAZE(PN))
Text 158,29,A$
' -- What Level --
Ink 3
A$=Str$(LEVEL(PN))
SI=Len(A$)
A$="00"+Right$(A$,SI-1)
Screen 1 : Text 126,64,Right$(A$,2)
' -- Number of players --
Ink 13
A$=Str$(PLY)
Screen 1 : Text 190,64,A$
End Proc
Procedure LIVES
'-------------- Display Lives left ----------
Screen 0
Gr Writing 1
LIVES$=Str$(LIVES(PN))
If PN=1 Then Ink 4,0 Else Ink 1,0
Set Font F5
Paste Bob 25,105,1
Text 48,124,"X"
Text 60,124,LIVES$
End Proc
Procedure HS_LOAD
' -------------Load Hi Score -------------
If Exist("Rat.Scores") Then Open In 1,"Rat.Scores" Else Pop Proc
For L=1 To 15
For I=1 To 7
Input #1,HS$(L,I)
Next I
Next L
Close 1
Proc HS_TABLE
End Proc
Procedure HS_TABLE
' --------- Display Hi Score on Hi Score Table-------------
Screen 4 : Set Font F0
Cls 8,33,63 To 628,216
Gr Writing 0
Ink 2 : Paper 8
For L=1 To 14
Text 48,L*11+60,HS$(L,1)
Text 210,L*11+60,HS$(L,2)
Text 292,L*11+60,HS$(L,4)
Text 363,L*11+60,HS$(L,3)
Text 398,L*11+60,HS$(L,7)
Text 462,L*11+60,HS$(L,5)
Text 549,L*11+60,HS$(L,6)
Next L
End Proc
Procedure HI_SCORE
'------- HI Score Display --------
Screen 0 : Set Font F2 : Ink 2,0
If HISCORE<SCORE(1) Then HISCORE=SCORE(1)
If HISCORE<SCORE(2) Then HISCORE=SCORE(2)
If Val(HS$(1,2))>HISCORE Then HISCORE=Val(HS$(1,2))
HISCORE$=Str$(HISCORE)
R=Len(HISCORE$)
HISCORE$="00000000000"+Right$(HISCORE$,R-1)
Text 249,48,Right$(HISCORE$,11)
End Proc
Procedure CAPS_NAME[NAMEWORK$]
' ----- Capitalise Names Proc by ?????????????????? ---------
'*** Format name - namely uppercases/lowercases name properly